int pwm_a = 3;  
int dir_a = 12; 
int i = 0;     

void setup(){
  pinMode(pwm_a, OUTPUT);  
  pinMode(dir_a, OUTPUT);
  analogWrite(pwm_a, 100);    
}

void loop(){ 
  digitalWrite(dir_a, HIGH);  
  fadein();   delay(1000);    
  fadeout();  delay(1000); 
  analogWrite(pwm_a, 0);   delay(2000);    
  digitalWrite(dir_a, LOW);  
  fadein();   delay(1000);
  fadeout();  delay(1000);
  analogWrite(pwm_a, 0);   delay(2000);    
}

void fadein(){ 
  for(i = 0 ; i <= 255; i+=5) { 
    analogWrite(pwm_a, i);   
    delay(30);  
  } 
}

void fadeout(){ 
  for(i = 255 ; i >= 0; i -=5) { 
    analogWrite(pwm_a, i); delay(30);  
  }
}

